package com.one.pass.util;

/*
OptionalValue类用于存储一个泛型类型的值和一个整数索引值，提供了对这两个值的基本操作方法。
通过构造函数和各种方法，用户可以方便地设置和获取这两个值，或者对索引值进行加法操作
*/

public class OptionalValue<T> {

    // 索引值，默认为-1
    private int i = -1;
    // 泛型类型的值
    private T value;

    // 默认构造函数
    public OptionalValue() {

    }

    // 带参数的构造函数，初始化value
    public OptionalValue(T t) {
        value = t;
    }

    // 设置索引值并返回新值
    public int setI(int i) {
        this.i = i;
        return i;
    }

    // 增加索引值并返回新值
    public int add(int i) {
        this.i += i;
        return this.i;
    }

    // 索引值加1并返回新值
    public int add() {
        return add(1);
    }

    // 获取当前的索引值
    public int getI() {
        return i;
    }

    // 设置value并返回新值
    public T setValue(T value) {
        this.value = value;
        return value;
    }

    // 获取当前的value值
    public T getValue() {
        return value;
    }
}
